<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <title>接口文档</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 20px;
        }

        h1,
        h2,
        h3 {
            color: #333;
        }

        pre {
            background-color: #f4f4f4;
            padding: 10px;
            border-radius: 5px;
            overflow-x: auto;
        }

        code {
            background-color: #eee;
            padding: 2px 4px;
            border-radius: 3px;
        }

        table {
            border-collapse: collapse;
            width: 100%;
            margin-bottom: 20px;
        }

        th,
        td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }

        th {
            background-color: #f2f2f2;
        }
    </style>
</head>

<body>

    <h1>接口文档</h1>

    <p>本接口服务运行在本地服务器上，默认端口为 <code>3000</code>。</p>

    <h2>1. 注册接口 (<code>/register</code>)</h2>

    <h3>📌 接口说明</h3>
    <p>用于新用户注册，需提供用户名、密码和邮箱，并进行格式校验和唯一性检查。</p>

    <h3>🔧 请求信息</h3>
    <ul>
        <li><strong>请求方法</strong>: <code>POST</code></li>
        <li><strong>请求 URL</strong>: <code>http://120.24.176.10:3000/register</code></li>
        <li><strong>请求头</strong>: 可选，支持 <code>application/x-www-form-urlencoded</code> 或 <code>application/json</code>
        </li>
        <li><strong>请求体格式</strong>: 表单或 JSON 均可</li>
        <li><strong>请求参数</strong>:</li>
    </ul>

    <table>
        <tr>
            <th>参数名</th>
            <th>类型</th>
            <th>是否必填</th>
            <th>说明</th>
        </tr>
        <tr>
            <td>username</td>
            <td>String</td>
            <td>是</td>
            <td>用户名，3~20位字母数字下划线</td>
        </tr>
        <tr>
            <td>password</td>
            <td>String</td>
            <td>是</td>
            <td>密码，6-20位含字母和数字</td>
        </tr>
        <tr>
            <td>email</td>
            <td>String</td>
            <td>是</td>
            <td>邮箱地址</td>
        </tr>
        <tr>
            <td>role</td>
            <td>String</td>
            <td>否</td>
            <td>用户角色（可选，默认 user，可选 admin）</td>
        </tr>
    </table>

    <h3>✅ 成功响应示例</h3>
    <pre><code>{
  "code": 10000,
  "message": "注册成功",
  "user": {
    "id": 1,
    "username": "test_user",
    "email": "test@example.com",
    "role": "user",
    "createdAt": "2025-04-05T12:00:00.000Z"
  }
}
</code></pre>

    <h3>❌ 错误响应示例</h3>
    <pre><code>{ "code": 10001, "error": "用户名已存在" }</code></pre>
    <pre><code>{ "code": 10002, "error": "邮箱已被注册" }</code></pre>
    <pre><code>{ "code": 10003, "error": "密码格式不合法，应为6-20位且包含字母和数字" }</code></pre>
    <pre><code>{ "code": 10004, "error": "用户名格式不合法，应为3-20位字母、数字或下划线" }</code></pre>
    <pre><code>{ "code": 10005, "error": "用户名、密码和邮箱是必填项" }</code></pre>

    <hr />

    <h2>2. 登录接口 (<code>/login</code>)</h2>

    <h3>📌 接口说明</h3>
    <p>用于用户登录，验证用户名和密码是否正确。</p>

    <h3>🔧 请求信息</h3>
    <ul>
        <li><strong>请求方法</strong>: <code>POST</code></li>
        <li><strong>请求 URL</strong>: <code>http://120.24.176.10:3000/login</code></li>
        <li><strong>请求头</strong>: 可选，支持 <code>application/x-www-form-urlencoded</code> 或 <code>application/json</code>
        </li>
        <li><strong>请求体格式</strong>: 表单或 JSON 均可</li>
        <li><strong>请求参数</strong>:</li>
    </ul>

    <table>
        <tr>
            <th>参数名</th>
            <th>类型</th>
            <th>是否必填</th>
            <th>说明</th>
        </tr>
        <tr>
            <td>username</td>
            <td>String</td>
            <td>是</td>
            <td>用户名，3~20位字母数字下划线</td>
        </tr>
        <tr>
            <td>password</td>
            <td>String</td>
            <td>是</td>
            <td>密码，6-20位含字母和数字</td>
        </tr>
    </table>

    <h3>✅ 成功响应示例</h3>
    <pre><code>{
  "code": 10000,
  "message": "登录成功",
  "user": {
    "id": 1,
    "username": "test_user",
    "password": "123456a",
    "email": "test@example.com",
    "role": "user"
  }
}
</code></pre>

    <h3>❌ 错误响应示例</h3>
    <pre><code>{ "code": 10001, "error": "用户名不存在" }</code></pre>
    <pre><code>{ "code": 10002, "error": "密码错误" }</code></pre>
    <pre><code>{ "code": 10003, "error": "用户名格式不合法，应为3-20位字母、数字或下划线" }</code></pre>
    <pre><code>{ "code": 10004, "error": "密码格式不合法，应为6-20位且包含字母和数字" }</code></pre>
    <pre><code>{ "code": 10005, "error": "用户名和密码是必填项" }</code></pre>

    <hr />

    <h2>3. 查询所有用户接口 (<code>/users</code>)</h2>

    <h3>📌 接口说明</h3>
    <p>查询系统中所有已注册的用户列表。</p>

    <h3>🔧 请求信息</h3>
    <ul>
        <li><strong>请求方法</strong>: <code>GET</code></li>
        <li><strong>请求 URL</strong>: <code>http://120.24.176.10:3000/users</code></li>
        <li><strong>请求头</strong>: 无特殊要求</li>
        <li><strong>请求参数</strong>: 无</li>
    </ul>

    <h3>✅ 成功响应示例</h3>
    <pre><code>{
  "code": 10000,
  "message": "查询成功",
  "data": [
    {
      "id": 1,
      "username": "test_user",
      "password": "123456a",
      "email": "test@example.com",
      "role": "user",
      "createdAt": "2025-04-05T12:00:00.000Z"
    }
  ]
}
</code></pre>

    <h3>❌ 错误响应示例</h3>
    <pre><code>{ "code": 10001, "error": "数据库查询失败" }</code></pre>

    <hr />

    <h2>4. 删除用户接口 (<code>/users/:id</code>)</h2>
    <h3>📌 接口说明</h3>
    <p>根据用户ID删除指定用户。</p>
    <h3>🔧 请求信息</h3>
    <ul>
        <li><strong>请求方法</strong>: <code>DELETE</code></li>
        <li><strong>请求 URL</strong>: <code>http://120.24.176.10:3000/users/:id</code></li>
        <li><strong>请求参数</strong>: <code>id</code>（路径参数，用户ID，必填）</li>
    </ul>
    <h3>✅ 成功响应示例</h3>
    <pre><code>{
  "code": 10000,
  "message": "用户删除成功"
}
</code></pre>
    <h3>❌ 错误响应示例</h3>
    <pre><code>{ "code": 10007, "error": "用户ID不合法" }</code></pre>
    <pre><code>{ "code": 10008, "error": "用户未找到" }</code></pre>

    <hr />

    <h2>5. 修改用户信息接口 (<code>/users/:id</code>)</h2>
    <h3>📌 接口说明</h3>
    <p>根据用户ID修改指定用户信息（用户名、密码、邮箱均为可选字段，支持部分更新）。</p>
    <h3>🔧 请求信息</h3>
    <ul>
        <li><strong>请求方法</strong>: <code>PUT</code></li>
        <li><strong>请求 URL</strong>: <code>http://120.24.176.10:3000/users/:id</code></li>
        <li><strong>请求参数</strong>: <code>id</code>（路径参数，用户ID，必填）</li>
        <li><strong>请求体</strong>:
            <code>username</code>、<code>password</code>、<code>email</code>、<code>role</code>（均为可选，role 仅支持 user 或 admin）
        </li>
    </ul>
    <h3>✅ 成功响应示例</h3>
    <pre><code>{
  "code": 10000,
  "message": "用户信息更新成功",
  "user": {
    "id": 1,
    "username": "new_name",
    "password": "newpass123",
    "email": "new@example.com",
    "role": "admin"
  }
}
</code></pre>
    <h3>❌ 错误响应示例</h3>
    <pre><code>{ "code": 10007, "error": "用户ID不合法" }</code></pre>
    <pre><code>{ "code": 10008, "error": "用户未找到" }</code></pre>
    <pre><code>{ "code": 10001, "error": "用户名已存在" }</code></pre>
    <pre><code>{ "code": 10002, "error": "邮箱已被注册" }</code></pre>
    <pre><code>{ "code": 10003, "error": "密码格式不合法，应为6-20位且包含字母和数字" }</code></pre>
    <pre><code>{ "code": 10004, "error": "用户名格式不合法，应为3-20位字母、数字或下划线" }</code></pre>
    <pre><code>{ "code": 10006, "error": "邮箱格式不合法" }</code></pre>

</body>

</html>